﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 算法基本功.算法._0_数组._1_双指针.左右指针.回文串
{
    internal class 最大回文子串
    {
        public string LongestPalindrome(string s)
        {
            string result = "";
            // 枚举所有子串 然后比谁最长就完事了
            for (int i = 0; i < s.Length; i++) { 
                string temp1 = 回文串(s, i, i);
                string temp2 = 回文串(s, i, i + 1);

                result = result.Length > temp1.Length? result : temp1;
                result = result.Length > temp2.Length? result : temp2;
            }
            return result;
        }

        //其实回文串是比较好判断的 只需要从中心向两遍展开 当左/右不相等就可以打住了
        public string 回文串(string s,int l ,int r) {
            while (l >= 0 && r < s.Length) {
                if (s[l] == s[r])
                {
                    l--;
                    r++;
                }
                else { 
                    break;
                }
            }
            //注意第二个参数是长度
            return s.Substring(l + 1,(r - 1)-(l + 1) + 1);
        }
    }
}
